package br.fbv.compreja.activity.produto;

import java.net.SocketException;
import java.net.UnknownHostException;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.TextView;
import br.fbv.compreja.R;
import br.fbv.compreja.activity.base.BaseActivity;
import br.fbv.compreja.activity.base.BuzzException;
import br.fbv.compreja.activity.login.LoginActivity;
import br.fbv.compreja.negocio.compra.CompraController;
import br.fbv.compreja.negocio.compra.ItemCompra;
import br.fbv.compreja.negocio.produto.Produto;
import br.fbv.compreja.negocio.produto.ProdutoController;

public class ProdutoActivity extends BaseActivity {
	private Produto produto;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.produto);
		Gallery produtoGallery = (Gallery) findViewById(R.id.produto_gallery);
		TextView produtoNome = (TextView) findViewById(R.id.produto_nome);
		TextView produtoPreco = (TextView) findViewById(R.id.produto_preco);
		TextView produtoDescricao = (TextView) findViewById(R.id.produto_descricao);
		TextView produtoQuantidade = (TextView) findViewById(R.id.produto_quantidade);
		Button bt_addCarrinho = (Button) findViewById(R.id.bt_add_carrinho);

		try {
			produto = ProdutoController.getInstance(this).buscarProduto(
					getIntent().getStringExtra(Produto.BARCODE));
			int quantidade = getIntent().getIntExtra(ItemCompra.QUANTIDADE, 0);

			ProdutoImageAdapter produtoImageAdapter = new ProdutoImageAdapter(
					this, produto.getImagensURL());
			produtoGallery.setAdapter(produtoImageAdapter);

			produtoNome.setText(produto.getNome());
			produtoDescricao.setText(produto.getDescricao());
			produtoPreco.setText(produto.getPreco().toString());
			if (quantidade > 0) {
				produtoQuantidade.setText(String.valueOf(quantidade));
			}

			bt_addCarrinho.setOnClickListener(new View.OnClickListener() {

				@Override
				public void onClick(View v) {
					Integer qtdProduto = null;
					try {
						qtdProduto = getIntegerValue(R.id.produto_quantidade);
						CompraController.getInstance(ProdutoActivity.this)
								.adcionarProdutoCarrinho(produto, qtdProduto);
						ProdutoActivity.this.finish();
					} catch (Exception e) {
						tratarExcecao(e);
					}
				}
			});
		} catch (UnknownHostException e) {
			throw new BuzzException("Merda no servidor", e);
		} catch (SocketException e) {
			throw new BuzzException("Merda no socket", e);
		} catch (NullPointerException e) {
			throw new BuzzException("Erro de NullPointer", e);
		} catch (RuntimeException e) {
			Intent i = new Intent(this, LoginActivity.class);
			startActivity(i);
			throw new BuzzException("Erro de Runtime");
		} catch (Exception e) {
			throw new BuzzException(e.getMessage(), e);
		}
	}
}
